--- title: PivotPy keywords: fastai sidebar: home_sidebar summary: "A Python Processing Tool for Vasp Input/Output. A CLI is available in Powershell, see Vasp2Visual." description: "A Python Processing Tool for Vasp Input/Output. A CLI is available in Powershell, see Vasp2Visual." nb_path: "index.ipynb" ---

import pivotpy as pp
paths = ['e:/Research/graphene_example/ISPIN_1/bands/DOS/vasprun.xml',
'e:/Research/graphene_example/ISPIN_1/bands/vasprun.xml',
'e:/Research/graphene_example/ISPIN_1/dos/vasprun.xml',
'e:/Research/graphene_example/ISPIN_2/bands/vasprun.xml',
'e:/Research/graphene_example/ISPIN_2/dos/sigm0_01/vasprun.xml',
'e:/Research/graphene_example/ISPIN_2/dos/vasprun.xml',
'e:/Research/graphene_example/vasprun.xml']
df = pp.generate_summary(paths_list=paths)
df
print(df.caption)
df.data
print(df.data.to_latex())
ax = pp.init_figure()
df = df.data # Access to Data if there is caption in Dataframe
df.sort_values('VBM').plot(ax=ax,x = 'VBM',y=['CBM','E_gap'])
import pivotpy as pp
print(', '.join(pp.__all__))
import os
os.chdir('E:/Research/graphene_example/ISPIN_1/bands')
xml_data=pp.read_asxml()
vr=pp.export_vasprun(elim=[-5,5])
vr
import pivotpy as pp
import matplotlib.pyplot as plt
vr1=pp.export_vasprun('E:/Research/graphene_example/ISPIN_2/bands/vasprun.xml')
vr2=pp.export_vasprun('E:/Research/graphene_example/ISPIN_2/dos/vasprun.xml')
axs=pp.init_figure(ncols=3,widths=[1,1,1],sharey=True,wspace=0.05,figsize=(10,2.6))
elements=[0,0,[0,1]]
orbs=[[0],[1],[2,3]]
orblabels=['s','p_z','(p_x+p_y)']
ti_cks=dict(xt_indices=[0,30,60,-1],xt_labels=['Γ','M','K','Γ'])
args_dict=dict(elements=elements,orbs=orbs,labels=orblabels,elim=[-20,15])
pp.quick_bplot(path_evr=vr1,ax=axs[0],**ti_cks,elim=[-20,15])
pp.quick_rgb_lines(path_evr=vr1,ax=axs[1],**args_dict,**ti_cks,colorbar=False)
lg_k={'ncol': 3}
pp.quick_dos_lines(path_evr=vr2,ax=axs[2],vertical=True,include_dos='pdos',**args_dict,legend_kwargs=lg_k)
pp.add_colorbar(ax=plt.gcf().add_axes([0.399,1.02,0.23,0.05]),ticklabels=[r'$s^{⇅}$',r'$p_z^{⇅}$',r'$(p_x+p_y)^{⇅}$'])
pp.show()
from IPython.display import HTML
fig = pp.plotly_rgb_lines(vr1,**args_dict)
HTML(fig.to_html())
pivotpy.sio module for details on generating mesh and path of KPOINTS as well as using Materials Projects' API to get POSCAR right in the working folder with command get_poscar. Below is a screenshot of interactive BZ plot. You can double click on blue points and hit Ctrl + C to copy the high symmetry points relative to reciprocal lattice basis vectors. (You will be able to draw kpath in Pivotpy-Dash application and generate KPOINTS automatically from a web interface later on!). import pivotpy as pp
from IPython.display import HTML,display
fig = pp.plot_bz([[1,0,0],[0,1,0],[0,0,1]])
HTML(fig.to_html())
import matplotlib.pyplot as plt
import pivotpy as pp
plt.style.use('bmh')
vr1=pp.export_vasprun('E:/Research/graphene_example/ISPIN_1/bands/vasprun.xml')
shift_kpath=vr1.kpath[-1] # Add last point from first export in second one.
vr2=pp.export_vasprun('E:/Research/graphene_example/ISPIN_2/bands/vasprun.xml',shift_kpath=shift_kpath)
last_k=vr2.kpath[-1]
axs=pp.init_figure(figsize=(5,2.6))
K_all=[*vr1.kpath,*vr2.kpath] # Merge kpath for ticks
kticks=[K_all[i] for i in [0,30,60,90,120,150,-1]]
ti_cks=dict(xticks=kticks,xt_labels=['Γ','M','K','Γ','M','K','Γ'])
pp.quick_bplot(path_evr=vr1,ax=axs)
pp.quick_bplot(path_evr=vr2,ax=axs,txt='Graphene(Left: ISPIN=1, Right: ISPIN=2)',ctxt='m')
pp.modify_axes(ax=axs,xlim=[0,last_k],ylim=[-10,10],**ti_cks)
import pivotpy as pp
plt.style.use('ggplot')
k=vr1.kpath
ef=vr1.bands.E_Fermi
evals=vr1.bands.evals-ef
#Let's interpolate our graph to see effect. It is useful for colored graphs.
knew,enew=pp.interpolate_data(x=k,y=evals,n=10,k=3)
plot=plt.plot(k,evals,'m',lw=5,label='real data')
plot=plt.plot(k,evals,'w',lw=1,label='interpolated',ls='dashed')
pp.add_text(ax=plt.gca(),txts='Graphene')
pp.ps_to_std(ps_command='(Get-Process)[0..4]')